/**
 * 当内部的函数被返回到外部并被变量接收，一定会产生闭包
 * 闭包会产生原来的作用域链不释放
 * 过度的闭包可能会导致内存泄漏或者加载过慢
 * 
 */

// function test1 () {
//   var n = 100;
//   function add () {
//     n++;
//     console.log(n);
//   }
//   function reduce () {
//     n--;
//     console.log(n);
//   }
//   return [add, reduce]
// }
// var arr = test1();
// arr[0]();
// arr[1]();

// function breadMgr (num) {
//   let breadNum = num || 10;
//   function supply () {
//     breadNum += 10;
//     console.log(breadNum);
//   }
//   function sale () {
//     breadNum--;
//     console.log(breadNum);
//   }
//   return [supply, sale]
// }
// let arr = breadMgr();
// arr[0]();
// arr[1]();
